var numList = [];
for (var i = 48; i <= 57; i++) {
    var char = String.fromCharCode(i);
    numList.push(char);
}

var smallList = [];
for (var i = 97; i <= 122; i++) {
    var char = String.fromCharCode(i);
    smallList.push(char);
}

var bigList = [];
for (var i = 65; i <= 90; i++) {
    var char = String.fromCharCode(i);
    bigList.push(char);
}

var speList = ["_", "$"];// 允许使用的特殊字符

// concat();

var normalList = numList.concat(smallList, bigList, speList);
console.log(normalList);


// function randCode() {
//     var list = numList.concat(smallList, bigList);

//     var str = "";
//     for (var i = 0; i < 4; i++) {
//         var index = Math.floor(Math.random() * list.length);
//         var char = list[index];
//         str += char;  // 可能重复
//     }
//     return str;
// }


// function randCode() {
//     var list = numList.concat(smallList, bigList);

//     var str = "";
//     var count = 4;
//     for (var i = 0; i < count; i++) {
//         var index = Math.floor(Math.random() * list.length);
//         var char = list[index];
//         if (!str.includes(char)) {  // 不存在 => 拼接
//             str += char;
//         } else { // 重复 =>  多加一次
//             count++;
//         }
//     }
//     return str;
// }


function randCode() {
    var list = numList.concat(smallList, bigList);

    var str = "";
    var count = 4;
    for (var i = 0; i < count; i++) { // 假设 i = 2重复
        var index = Math.floor(Math.random() * list.length);
        var char = list[index];
        if (!str.includes(char)) {  // 不存在 => 拼接
            str += char;
        } else { // 重复 =>  本次不算
            i--;  // i-- => i=1  => 本次循环结束 i++  => i = 2
        }
    }
    return str;
}

